package com.tests;

import com.metier.*;

import static org.junit.Assert.*;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

/**
 * Classe de test de la Classe metier TypeCharge
 * 
 * @author b0dian
 * @version 1.0
 *
 */
public class TypeChargeTest {
	TypeCharge t;
	TypeCharge t1;

	/**
	 * Nos test necessiterons des objets qui sont instancie ici
	 */
	@Before
	// avant toutes les tests
	public void setUp() throws Exception {
		t = new TypeCharge(1, "Rapide", 3);
		t1 = new TypeCharge(2, "slow", 1);
	}

	/**
	 * Les objets instancie precedemment doivent ètre detruit
	 * 
	 * @throws Exception
	 */
	@After
	public void tearDown() throws Exception {
		t = null;
		t1 = null;
	}

	/**
	 * existence de l'objet on verifie que l'instanciation s'est passe
	 * correctement
	 */
	@Test
	public void testTypeCharge() {
		assertNotNull("L'instance est creee", t);
		assertNotNull("L'instance est creee", t1);
	}

	/**
	 * Test de methode get code
	 */
	@Test
	public void testGetCodeTypeCharge() {
		assertEquals("Est-ce que ce code est correct", 1, t.getCodeTypeCharge());
	}

	/**
	 * Test de methode get code en cas de faux
	 */
	@Test
	public void testGetCodeTypeChargeInverse() {
		assertNotEquals("Est-ce que ce code est incorrect", 2,
				t.getCodeTypeCharge());
	}

	/**
	 * Test de methode getLibelleTypeCharge
	 */
	@Test
	public void testGetLibelleTypeCharge() {
		assertEquals("Est-ce que ce libelle est correct", "Rapide",
				t.getLibelleTypeCharge());
		assertEquals("Est-ce que ce libelle est correct", "slow",
				t1.getLibelleTypeCharge());
	}

	/**
	 * Test de methode getLibelleTypeCharge en cas de faux
	 */
	@Test
	public void testGetLibelleTypeChargeInverse() {
		assertNotEquals("Est-ce que ce libelle est incorrect", "super rapide",
				t.getLibelleTypeCharge());
	}

	/**
	 * Test de methode SetLibelleTypeCharge
	 */
	@Test
	public void testSetLibelleTypeCharge() {
		t.setLibelleTypeCharge("charge semi-rapide");
		assertEquals("Est-ce que ce libelle est correct", "charge semi-rapide",
				t.getLibelleTypeCharge());
		t1.setLibelleTypeCharge("charge semi-rapide");
		assertEquals("Est-ce que ce libelle est correct", "charge semi-rapide",
				t1.getLibelleTypeCharge());
	}

	/**
	 * Test de methode SetLibelleTypeCharge en cas de faux
	 */
	@Test
	public void testSetLibelleTypeChargeInverse() {
		assertNotEquals("Est-ce que ce libelle est incorrect",
				"charge semi-rapide", t.getLibelleTypeCharge());
	}

	/**
	 * Test de methode GetPuissance
	 */
	@Test
	public void testGetPuissance() {
		assertEquals("Est-ce que cette puissance est correct", 3,
				t.getPuissance());
		assertEquals("Est-ce que cette puissance est correct", 1,
				t1.getPuissance());
	}

	/**
	 * Test de methode GetPuissance en cas de faux
	 */
	@Test
	public void testGetPuissanceInverse() {
		assertNotEquals("Est-ce que cette puissance est incorrect", 65,
				t.getPuissance());
	}

	/**
	 * Test de methode SetPuissance
	 */
	@Test
	public void testSetPuissance() {
		t.setPuissance(25);
		assertEquals("Est-ce que cette puissance est correct", 25,
				t.getPuissance());
		t1.setPuissance(25);
		assertEquals("Est-ce que cette puissance est correct", 25,
				t1.getPuissance());
	}

	/**
	 * Test de methode SetPuissance en cas de faux
	 */
	@Test
	public void testSetPuissanceInverse() {
		assertNotEquals("Est-ce que cette puissance est correct", 25,
				t.getPuissance());
	}

}
